var reverseWords = function (str) {
    let left = 0, right = str.length - 1;
    let queue = [];
    let words = '';
    // 去除开头和结尾的空格
    while (str.charAt(left) === ' ') left++;
    while (str.charAt(right) === ' ') right--;
    // 从头往后遍历单词
    while (left <= right) {
        let char = str.charAt(left);
        // 如果遇到空格 且只有一个空格,即单词word存在单词 想数组头部插入；
        if (char === ' ' && words) {
            queue.unshift(words);
            words = '';
        } else if (char !== ' ') {// 如果不是空格，单词进行拼接
            words += char;
        }
        left++;
    }
    // 加入最后一个单词
    queue.unshift(words);
    console.log(queue);
    return queue.join(' ');
}

reverseWords("  we are  i  ");



// 第一题
// 写一个 deepEqual 函数用来判断两个参数是否相等，使用效果如下：
// a和b可能是原始类型，也可能是简单对象。不会有循环引用，不用比较原型链。
function deepEqual(a, b) { ... }

// deepEqual({a:1, b:2}, {a:1, b:2}) // true
// deepEqual([1,2], [1,2]) // true
// deepEqual(Number(1), Number(1)) // true, 注意
//  deepEqual([1,2], [1,2, 3]) // false
// deepEqual([1,2], {0:1,1:2}) // false

function deepEqual(a, b){
  if(Array.isArray(a) && Array.isArray(b)){
    return isEqualArr(a, b);
  } else if(type of a ==='object' && type of b === 'object'){
    return isEqualObj(a, b);
  }
}

function isEqualArr(arr1, arr2){
  if(arr1.lenngth != arr2.elngth) return false;
  for(let i = 0; i < arr1.length; i++){
    if(arr1[i] != arr2[i]) return false;
  }
  return true;
}

function isEqualObj(obj1, obj2){
  if(object1 === null || obj2=== null) return false;
  let keys1 = Object.keys(obj1);
  let keys2 = Object.keys(obj2);
  if(keys1.length != keys2.length) return false;
  for(let key of keys){
    if(!keys2.includes(key) || isEqualObj(obj1[keys], obj2[key])) return false;
  }
  return true;
}





// 第二题
// 本代码在浏览器中执行，补充代码使得打印结果符合预期。[可选]用两种不同的方式实现
// your code goes here
let a = {
  arr: [
    'a', 'b', 'c'
  ],
  i: 0,
  toString(){
    return arr[this.i++];
  }
}

console.log(a + a + a); // 打印'abc'